100
How can I prevent showing the border for selected/highlight/hot items

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:Add("Item")
			oItems:Add("Item")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
99
How can I change the item's background/backcolor, when the cursor hovers it (hot)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item"):SetProperty("HotBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:Add(""):ToString := "Item[bghot=RGB(255,0,0)]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
98
How can I change the item's background/backcolor

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItems:Add("Item"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:Add("Item"):SetProperty("BackColor",0x1000000)
			oItems:Add(""):ToString := "Item[bg=RGB(255,0,0)]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
97
How can I specify/assign the item's identifier

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Debug := .T.
		oItems := oRibbon:Items()
			oItems:Add("ID 1",0,1000)
			oItems:Add("ID 2"):ID := 1001
			oItems:Add(""):ToString := "ID 3[id=1002]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
96
The popup is displayed using a fade/light-up effect. Is it possible to prevent that

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ShowPopupEffect := 0/*exShowPopupDirect*/
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
				oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
95
How can I show semi-transparent popups

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupVisibility := 50
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
				oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
94
How can I change the popup's border

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
				oItems1:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
93
How can I show a horizontal separator/line between groups (method 3,EBN color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("")
						oItem1:AllowEdit := 3/*exItemEditSlider*/
						oItem1:EditBorder := 0/*exEditBorderNone*/
						oItem1:EditWidth := -128
						oItem1:EditValue := 25
					oItem2 := oItems1:Add("")
						oItem2:Enabled := .F.
						oItem2:SetProperty("BackColor",0x1000000)
						oItem2:ItemHeight := 8
						oItem2:CaptionWidth := 128
					oItem3 := oItems1:Add("")
						oItem3:AllowEdit := 3/*exItemEditSlider*/
						oItem3:EditBorder := 0/*exEditBorderNone*/
						oItem3:EditWidth := -128
						oItem3:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
92
How can I show a horizontal separator/line between groups (method 2,solid color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("")
						oItem1:AllowEdit := 3/*exItemEditSlider*/
						oItem1:EditBorder := 0/*exEditBorderNone*/
						oItem1:EditWidth := -128
						oItem1:EditValue := 25
					oItem2 := oItems1:Add("")
						oItem2:Enabled := .F.
						oItem2:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
						oItem2:ItemHeight := 8
						oItem2:CaptionWidth := 128
					oItem3 := oItems1:Add("")
						oItem3:AllowEdit := 3/*exItemEditSlider*/
						oItem3:EditBorder := 0/*exEditBorderNone*/
						oItem3:EditWidth := -128
						oItem3:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
91
How can I show a horizontal separator/line between groups (method 1,pattern)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 259/*exGroupPopupVertical+exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("")
						oItem1:AllowEdit := 3/*exItemEditSlider*/
						oItem1:EditBorder := 0/*exEditBorderNone*/
						oItem1:EditWidth := -128
						oItem1:EditValue := 25
					oItem2 := oItems1:Add("",2)
						oItem2:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
						oItems2 := oItem2:Items()
							oItem3 := oItems2:Add("")
								oItem3:Enabled := .F.
								oItem3:ItemHeight := 8
								oItem3:CaptionWidth := 128
							oItems2:BackgroundExt := "none[(0,50%-1,100%,2),pattern=0x006,patterncolor=RGB(128,128,128)]"
					oItem4 := oItems1:Add("")
						oItem4:AllowEdit := 3/*exItemEditSlider*/
						oItem4:EditBorder := 0/*exEditBorderNone*/
						oItem4:EditWidth := -128
						oItem4:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
90
How can I show a vertical separator/line between groups (method 3,EBN color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("")
						oItem1:ItemHeight := 128
						oItem1:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
						oItem1:EditBorder := 0/*exEditBorderNone*/
						oItem1:EditWidth := 32
						oItem1:EditValue := 25
					oItem2 := oItems1:Add("")
						oItem2:Enabled := .F.
						oItem2:SetProperty("BackColor",0x1000000)
						oItem2:ItemHeight := 96
						oItem2:CaptionWidth := 8
					oItem3 := oItems1:Add("")
						oItem3:ItemHeight := 128
						oItem3:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
						oItem3:EditBorder := 0/*exEditBorderNone*/
						oItem3:EditWidth := 32
						oItem3:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
89
How can I show a vertical separator/line between groups (method 2,solid color)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("")
						oItem1:ItemHeight := 128
						oItem1:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
						oItem1:EditBorder := 0/*exEditBorderNone*/
						oItem1:EditWidth := 32
						oItem1:EditValue := 25
					oItem2 := oItems1:Add("")
						oItem2:Enabled := .F.
						oItem2:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 128,128,128 } )  , .F. ))
						oItem2:ItemHeight := 96
						oItem2:CaptionWidth := 8
					oItem3 := oItems1:Add("")
						oItem3:ItemHeight := 128
						oItem3:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
						oItem3:EditBorder := 0/*exEditBorderNone*/
						oItem3:EditWidth := 32
						oItem3:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
88
How can I show a vertical separator/line between groups (method 1,pattern)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3,oItem4
	LOCAL oItems,oItems1,oItems2
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("")
						oItem1:ItemHeight := 128
						oItem1:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
						oItem1:EditBorder := 0/*exEditBorderNone*/
						oItem1:EditWidth := 32
						oItem1:EditValue := 25
					oItem2 := oItems1:Add("",2)
						oItem2:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
						oItems2 := oItem2:Items()
							oItem3 := oItems2:Add("")
								oItem3:Enabled := .F.
								oItem3:ItemHeight := 96
								oItem3:CaptionWidth := 8
							oItems2:BackgroundExt := "none[(50%-1,0,2,100%),pattern=6,patterncolor=RGB(128,128,128)]"
					oItem4 := oItems1:Add("")
						oItem4:ItemHeight := 128
						oItem4:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
						oItem4:EditBorder := 0/*exEditBorderNone*/
						oItem4:EditWidth := 32
						oItem4:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
87
How can I show a pattern on the items

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
			oItems:Padding := "2,2,2,12"
			oItems:BackgroundExt := "root[pattern=0x006,patterncolor=RGB(128,128,128),frame=RGB(128,128,128)](bottom[2],bottom[12,text=`<font ;6><fgcolor 808080><off -2> clipboard </off></font></fgcolor>`,align=0x21])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
86
How can I show a thick frame arround the items

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
			oItems:Padding := "2,2,2,12"
			oItems:BackgroundExt := "root[frame=RGB(128,128,128)](bottom[2],bottom[12,text=`<font ;6><fgcolor 808080><off -2> clipboard </off></font></fgcolor>`,align=0x21])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
85
How can I add some additional icons on the background

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
			oItems:Padding := "0,0,0,16"
			oItems:BackgroundExt := "root[text=`<img>2</img><font ;6><fgcolor 808080><off -2> clipboard </off></font></fgcolor><img>2</img>`,align=0x21]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
84
How can I add some additional text on the background

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
			oItems:Padding := "0,0,0,8"
			oItems:BackgroundExt := "root[text=`<font ;6><fgcolor 808080>clipboard`,align=0x21]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
83
How can I disable incremental searching

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:PopupIncrementalSearch := 0/*exNoIncrementalSearch*/
		oRibbon:Items():ToString := "Popup(Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
82
How can I assign a tooltip to an item (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "ToolTip[id=10][ttp=This is a bit of text that should be shown when cursor hovers the item]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
81
How can I assign a tooltip to an item (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():Add("ToolTip"):Tooltip := "This is a bit of text that should be shown when cursor hovers the item"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
80
How can I assign a spin field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Spin")
				oItem:AllowEdit := 512/*exItemEditSpin*/
				oItem:EditWidth := 16
				oItem:EditValue := 15
				oItem:EditBorder := 0/*exEditBorderNone*/
				oItem:SetProperty("EditOption",2/*exEditMaxValue*/,1000)
			oItem1 := oItems:Add("Edit-Spin")
				oItem1:AllowEdit := 513/*exItemEditSpin+exItemEditText*/
				oItem1:EditWidth := -128
				oItem1:EditValue := 15
				oItem1:SetProperty("EditOption",2/*exEditMaxValue*/,1000)
			oItem2 := oItems:Add("Splider-Spin")
				oItem2:AllowEdit := 515/*exItemEditSpin+exItemEditSlider*/
				oItem2:EditWidth := -128
				oItem2:EditValue := 25
				oItem2:EditBorder := 0/*exEditBorderNone*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
79
How can I assign a spin field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Spin[id=10][edittype=0x0200][edit=15][border=0][max=1000][editwidth=16],Edit-Spin[id=20][edittype=0x0201][edit=15][max=1000][editwidth=-128],Splider-Spin[id=30][edittype=0x0203][edit=25][border=0][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
78
How can I add a vertical slider (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "Vertical[id=10][edittype=0x0403][edit=25][border=0][height=128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
77
How can I add a vertical slider (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Vertical")
				oItem:ItemHeight := 128
				oItem:AllowEdit := 1027/*exItemEditVertical+exItemEditSlider*/
				oItem:EditBorder := 0/*exEditBorderNone*/
				oItem:EditWidth := 32
				oItem:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
76
How can I disable an editor (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "Disabled[id=10][dis][edittype=0x01][edit=text-box][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
75
How can I disable an editor (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Disabled")
				oItem:AllowEdit := 1/*exItemEditText*/
				oItem:EditWidth := -128
				oItem:EditValue := "text-box"
				oItem:Enabled := .F.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
74
How can I lock an editor (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "Locked[id=10][edittype=0x0101][edit=disabled text-box][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
73
How can I lock an editor (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("Locked")
				oItem:AllowEdit := 257/*exItemEditReadOnly+exItemEditText*/
				oItem:EditWidth := -128
				oItem:EditValue := "disabled text-box"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
72
How can I assign a font field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Font")
				oItem:AllowEdit := 7/*exItemEditFont*/
				oItem:EditWidth := -128
				oItem:EditValue := "Tahoma"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
71
How can I assign a font field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Font[id=10][edittype=0x07][edit=Tahoma][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
70
How can I assign a color field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Color")
				oItem:AllowEdit := 6/*exItemEditColor*/
				oItem:EditBorder := 0/*exEditBorderNone*/
				oItem:EditWidth := -128
				oItem:EditValue := 255
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
69
How can I assign a color field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Color[id=10][edittype=0x06][edit=#FF0000][border=0][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
68
How can I assign a scrollbar field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("ScrollBar")
				oItem:AllowEdit := 5/*exItemEditScrollBar*/
				oItem:EditWidth := -128
				oItem:EditValue := "25"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
67
How can I assign a scrollbar field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "ScrollBar[id=10][edittype=0x05][edit=25][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
66
Is it possible to change the tooltip beging shown when I change the slider/scroll/progress value

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Progress")
				oItem:AllowEdit := 4/*exItemEditProgress*/
				oItem:EditWidth := -128
				oItem:EditValue := 25
				oItem:SetProperty("EditOption",8/*exEditChangeToolTip*/,"`Current value is: ` + value")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
65
How can I hide the tooltip beging shown when I change the slider/scroll/progress value

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Progress")
				oItem:AllowEdit := 4/*exItemEditProgress*/
				oItem:EditWidth := -128
				oItem:EditValue := 25
				oItem:SetProperty("EditOption",8/*exEditChangeToolTip*/,"")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
64
How can I assign a progress field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Progress")
				oItem:AllowEdit := 4/*exItemEditProgress*/
				oItem:EditWidth := -128
				oItem:EditValue := 25
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
63
How can I assign a progress field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Progress[id=10][edittype=0x04][edit=25][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
62
How can I assign a slider field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Slider")
				oItem:AllowEdit := 3/*exItemEditSlider*/
				oItem:EditWidth := -128
				oItem:EditValue := 25
			oItem1 := oItems:Add("Slider")
				oItem1:AllowEdit := 3/*exItemEditSlider*/
				oItem1:EditBorder := 0/*exEditBorderNone*/
				oItem1:EditWidth := -128
				oItem1:SetProperty("EditOption",1/*exEditMinValue*/,50)
				oItem1:SetProperty("EditOption",2/*exEditMaxValue*/,450)
				oItem1:SetProperty("EditOption",3/*exEditTickStyle*/,2)
				oItem1:SetProperty("EditOption",4/*exEditTickFrequency*/,50)
				oItem1:SetProperty("EditOption",5/*exEditTickLabel*/,"value = vmin ? '<br><font ;6><b>'+value : ( value = vmax ? '<br><font ;6><b>'+value : ( value = 200 ? '<br><font ;6><b><fgcolor FF0000>'+value : '' ) )")
				oItem1:EditValue := 345
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
61
How can I assign a slider field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Slider[id=10][edittype=0x03][edit=25][editwidth=-128],Slider[id=20][edittype=0x03][edit=345][border=0][min=50][max=450][tick=2][freq=50][ticklabel=value = vmin ? '<br><font ;6><b>'+value : ( value = vmax ? '<br><font ;6><b>'+value : ( value = 200 ? '<br><font ;6><b><fgcolor FF0000>'+value : '' ) )][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
60
How can I assign a mask (time) field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Time")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := "99:00:00;;0;overtype,warning=Invalid character"
				oItem:EditValue := "123456"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
59
How can I assign a mask (time) field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Time[id=10][edittype=0x02][edit=12:34:56][mask=99:00:00;;0;overtype,warning=Invalid character][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
58
How can I assign a mask (license key) field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("License Key")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := "AAAA-AAAA-AAAA-AAAA"
				oItem:EditValue := "1234"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
57
How can I assign a mask (license key) field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "License Key[id=10][edittype=0x02][edit=1234-____-____-____][mask=AAAA-AAAA-AAAA-AAAA][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
56
How can I assign a mask (IP address) field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("IP Address")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := "{0,255}.{0,255}.{0,255}.{0,255}"
				oItem:EditValue := "1.2.3.4"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
55
How can I assign a mask (IP address) field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "IP Address[id=10][edittype=0x02][edit=1.2.3.4][mask={0,255}.{0,255}.{0,255}.{0,255}][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
54
How can I assign a mask (phone) field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Phone")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := "!(9999) 000 000;;;empty,select=4,overtype,beep"
				oItem:EditValue := "0771638317"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
53
How can I assign a mask (phone) field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Phone[id=10][edittype=0x02][edit=(0771) 638 317][mask=!(9999) 000 000;;;empty,select=4,overtype,beep][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
52
How can I assign a mask (date) field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := "`Date: `{1,12}/{1,31}/{1950,2050};;;select=1"
				oItem:EditValue := "02/15/2015"
			oItem1 := oItems:Add("Date")
				oItem1:AllowEdit := 2/*exItemEditMask*/
				oItem1:EditWidth := -128
				oItem1:EditMask := "!00/00/0000;;0;empty,validateas=1,invalid=Invalid date!,warning=Invalid character!,select=4,overtype"
				oItem1:EditValue := "02/15/2015"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
51
How can I assign a mask (date) field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "[id=10][edittype=0x02][edit=Date: 2/15/2015][mask=`Date: `{1,12}/{1,31}/{1950,2050};;;select=1][editwidth=-128],Date[id=20][edittype=0x02][edit=02/15/2015][mask=!00/00/0000;;0;empty,validateas=1,invalid=Invalid date!,warning=Invalid character!,select=4,overtype][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
50
How can I assign a mask (integer) field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Integer")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := ";;;float,grouping=,digits=0"
				oItem:EditValue := 1000
			oItem1 := oItems:Add("Integer-Grouping")
				oItem1:AllowEdit := 2/*exItemEditMask*/
				oItem1:EditWidth := -128
				oItem1:EditMask := ";;;float,decimal=,digits=0,select=1"
				oItem1:EditValue := 1000
			oItem2 := oItems:Add("Integer-In-Range")
				oItem2:AllowEdit := 2/*exItemEditMask*/
				oItem2:EditWidth := -128
				oItem2:EditMask := "{0,2050}"
				oItem2:EditValue := 1000
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
49
How can I assign a mask (integer) field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Integer[id=10][edittype=0x02][edit=1000][mask=;;;float,grouping=,digits=0][editwidth=-128],Integer-Grouping[id=20][edittype=0x02][edit=1,000][mask=;;;float,decimal=,digits=0,select=1][editwidth=-128],Integer-In-Range[id=30][edittype=0x02][edit=1000][mask={0,2050}][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
48
How can I assign a mask field to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Mask")
				oItem:AllowEdit := 2/*exItemEditMask*/
				oItem:EditWidth := -128
				oItem:EditMask := ";;;float,select=1"
				oItem:EditValue := 1000
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
47
How can I assign a mask field to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Text-Box[id=10][edittype=0x02][edit=1,000][mask=;;;float,select=1][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
46
How can I assign an edit / text-box to the item (method 2)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oItems := oRibbon:Items()
			oItem := oItems:Add("Mask")
				oItem:AllowEdit := 1/*exItemEditText*/
				oItem:EditValue := "this is a text"
				oItem:EditWidth := -128
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
45
How can I assign an edit / text-box to the item (method 1)

PROCEDURE OnEditChange(oRibbon,Itm)
	DevOut( Transform(Itm,"") )
RETURN

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:EditChange := {|Itm| OnEditChange(oRibbon,Itm)} /*Occurs when the user alters the item's text box field.*/

		oRibbon:ToString := "Text-Box[edit=this is a text][editwidth=-128]"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
44
How can I display a tab into the ribbon (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oItems := oRibbon:Items()
			oItems:ToString := "[id=0][group=0x0103][itemspad=4,4,4,4]([id=-10][group=0x03](),[id=-99][bg=RGB(240,240,240)][group=0x03][itemspad=4,4,4,4]([id=-100]))"
			oItems1 := oItems:Item(-10):Items()
				oItems1:Add("",0,0):Padding := "8,0,0,0"
				oItem := oItems1:Add("New Page")
					oItem:ToString := "[typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=0x01]([id=0][group=0x03]([]))"
					oItem:Caption := "Page<off -5><font ;5><b>1</b></font></off>"
					oItems2 := oItem:Items:Item(0):Items()
						oItem1 := oItems2:Add("add here fields for page 1")
							oItem1:ID := -1000
							oItem1:Enabled := .F.
							oItem1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
				oItem2 := oItems1:Add("New Page")
					oItem2:ToString := "[typ=2][chk=0][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=0x01]([id=0][group=0x03]([]))"
					oItem2:Caption := "Page<off -5><font ;5><b>2</b></font></off>"
					oItems3 := oItem2:Items:Item(0):Items()
						oItem3 := oItems3:Add("add here fields for page 2")
							oItem3:ID := -1001
							oItem3:Enabled := .F.
							oItem3:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))
				oItems1:Add("",0,0):Padding := "8,0,0,0"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
43
How can I add check-buttons to items, without showing the check-box (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Check 1")
						oItem1:Check := .T.
						oItem1:Checked := .T.
						oItem1:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
					oItem2 := oItems1:Add("Check 2")
						oItem2:Check := .T.
						oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
					oItem3 := oItems1:Add("Check 3")
						oItem3:Check := .T.
						oItem3:Checked := .T.
						oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
42
How can I add check-buttons to items, without showing the check-box (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[group=0x3](Check 1[chk=1][show=1],Check 2[chk=0][show=1],Check 3[chk=1][show=1])"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
41
How can I add radio buttons to items, without showing the radio-buttons (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Radio 1",,1000)
						oItem1:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
						oItem1:Radio := .T.
						oItem1:RadioGroup := 100
					oItem2 := oItems1:Add("Radio 2",,1001)
						oItem2:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
						oItem2:Radio := .T.
						oItem2:RadioGroup := 100
					oItem3 := oItems1:Add("Radio 2",,1003)
						oItem3:ShowCheckedAsSelected := 1/*exDisplayItemHighlight*/
						oItem3:Radio := .T.
						oItem3:RadioGroup := 100
					oItems1:Item(1000):Checked := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
40
How can I add radio buttons to items, without showing the radio-buttons (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[group=0x3](Radio 1[rad=1][show=1][grp=100][id=1000],Radio 2[rad=0][show=1][grp=100][id=1001],Radio 2[rad=0][show=1][grp=100][id=1002])"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
39
How can I add check-buttons to items (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Check 1")
						oItem1:Check := .T.
						oItem1:Checked := .T.
					oItems1:Add("Check 2"):Check := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
38
How can I add check-buttons to items (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[group=0x3](Check 1[chk=1],Check 2[chk=0])"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
37
How can I add radio buttons to items (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 1/*exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Radio 1",,1000)
						oItem1:Radio := .T.
						oItem1:RadioGroup := 100
					oItem2 := oItems1:Add("Radio 2",,1001)
						oItem2:Radio := .T.
						oItem2:RadioGroup := 100
					oItem3 := oItems1:Add("Radio 2",,1003)
						oItem3:Radio := .T.
						oItem3:RadioGroup := 100
					oItems1:Item(1000):Checked := .T.
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
36
How can I add radio buttons to items (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:ToString := "[group=0x1](Radio 1[rad=1][grp=100][id=1000],Radio 2[rad=0][grp=100][id=1001],Radio 2[rad=0][grp=100][id=1002])"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
35
How can I change the selection/highlighting color

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("SelBackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 128,0,0 } )  , .F. ))
		oRibbon:SetProperty("Background",111/*exMenuHotForeColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 255,255,255 } )  , .F. ))
		oRibbon:ToString := "[group=3](Item 1[chk],Item 2[chk])"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
34
How can I prevent showing/hide the border on the selected/highlighted item

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,oRibbon:SelBackColor())
		oRibbon:ToString := "Item 1,Item 2"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
33
How can I display a tab into the ribbon (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("Background",102/*exMenuSelBorderColor*/,AutomationTranslateColor( GraMakeRGBColor  ( { 240,240,240 } )  , .F. ))
		oRibbon:ToString := "[group=0x0103][itemspad=4,4,4,4]([id=-10][group=0x03]([id=50][pad=8,0,0,0],Page<off -5><font ;5><b>1</b></font></off>[id=60][typ=2][chk=1][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(240,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=1]([group=0x03]([id=80],add here fields for page 1[id=-1000][dis])),Page<off -5><font ;5><b>2</b></font></off>[id=100][typ=2][spchk=-1][show=1][grp=10][bghot=RGB(255,255,255)][bgsel=RGB(240,240,240)][bgselhot=RGB(2" +;
		"40,240,240)][height=16][group=0x03][tab=-100][pad=2,0,2,0][popupalign=1]([group=0x03]([id=120],add here fields for page 2[id=-1001][dis])),[id=140][pad=8,0,0,0]),[id=-99][bg=RGB(240,240,240)][group=0x03][itemspad=4,4,4,4]([id=-100]))"
		oItem := oRibbon:Items:Item(-1000)
			oItem:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
		oItem1 := oRibbon:Items:Item(-1001)
			oItem1:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 0,255,0 } )  , .F. ))

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
32
How do I prevent highlighting the item (method 2.b)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("No highlight"):Enabled := .F.
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
31
How do I prevent highlighting the item (method 2.a)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("No highlight",2)
				oItem:Items():Add("")
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItem:ShowPopupArrow := .F.
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
30
How do I prevent highlighting the item (method 1.b)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "No highlight[dis],Item 2,Item 3"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
29
How do I prevent highlighting the item (method 1.a)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "No highlight[group=0x3][arrow=0]([]),Item 2,Item 3"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
28
How can I can I assign pictures or images for the item (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oRibbon:SetProperty("HTMLPicture","pic2","c:\exontrol\images\auction.gif")
		oItems := oRibbon:Items()
			oItems:Add("Item"):HTMLImage := "pic1"
			oItems:Add("Item"):HTMLImage := "pic2"
			oItems:Add("",1)
			oItems:Add("Item <img>pic1</img>")
			oItems:Add("Item <img>pic2</img>")
			oItems:Add("",1)
			oItems:Add("<img>pic1</img> Item <img>pic2</img>")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
27
How can I can I assign pictures or images for the item (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:SetProperty("HTMLPicture","pic1","c:\exontrol\images\zipdisk.gif")
		oRibbon:SetProperty("HTMLPicture","pic2","c:\exontrol\images\auction.gif")
		oRibbon:ToString := "Item[himg=pic1],Item[himg=pic2],[sep],Item <img>pic1</img>,Item <img>pic2</img>,[sep],<img>pic1</img> Item <img>pic2</img>"

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
26
How can I can I assign icons for the item (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oItems := oRibbon:Items()
			oItems:Add("Item"):Image := 1
			oItems:Add("Item"):Image := 2
			oItems:Add("",1)
			oItems:Add("Item <img>1</img>")
			oItems:Add("Item <img>2</img>")
			oItems:Add("",1)
			oItems:Add("Item <img>1</img>"):Image := 1
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
25
How can I can I assign icons for the item (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Images("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTqlVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yNAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=")
		oRibbon:Items():ToString := "Item[img=1],Item[img=2],[sep],Item <img>1</img>,Item <img>2</img>,[sep],Item <img>1</img>[img=1]"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
24
How can I change the visual appearance / background color (EBN) for a collection of items/group (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItems:Padding := "2,2,2,2"
			oItems:SetProperty("BackColor",0x1000000)
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
23
How can I change the visual appearance / background color (EBN) for a collection of items/group (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:Items():ToString := "[itemsbg=0x1000000][itemspad=2,2,2,2][group=0x103](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
22
How can I change the background color for a collection of items/group (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Padding := "2,2,2,2"
			oItems:SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
21
How can I change the background color for a collection of items/group (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "[itemsbg=RGB(255,0,0)][itemspad=2,2,2,2][group=0x103](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
20
How can I change the visual appearance / background color (EBN) for a specified item (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2"):SetProperty("BackColor",0x1000000)
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
19
How can I change the visual appearance / background color (EBN) for a specified item (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:Items():ToString := "Item 1,Item 2[bg=0x1000000],Item 3"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
18
How can I change the background color for a specified item (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2"):SetProperty("BackColor",AutomationTranslateColor( GraMakeRGBColor  ( { 255,0,0 } )  , .F. ))
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
17
How can I change the background color for a specified item (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "Item 1,Item 2[bg=RGB(255,0,0)],Item 3"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
16
How can I change the visual appearance (EBN) of the floating popups (method 2, applies to single popup)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:PopupAppearance := 16777216/*0x1000000+*/
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
15
How can I change the visual appearance (EBN) of the floating popups (method 1, applies to all)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:VisualAppearance():Add(1,"c:\exontrol\images\normal.ebn")
		oRibbon:Items():ToString := "Popup(Item 1,Item 2,Item 3)"
		oRibbon:PopupAppearance := 16777216/*0x1000000+*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
14
How can I change the visual appearance of the floating popups (method 2, applies to single popup)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:PopupAppearance := 6/*ShadowBorder*/
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
13
How can I change the visual appearance of the floating popups (method 1, applies to all)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "Popup(Item 1,Item 2,Item 3)"
		oRibbon:PopupAppearance := 6/*ShadowBorder*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
12
How do I add a popup or a sub-menu so it show when cursor hovers it (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems1 := oItems:Add("Popup",2):Items()
				oItems1:Add("Item 1")
				oItems1:Add("Item 2")
				oItems1:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
11
How do I add a popup or a sub-menu so it show when cursor hovers it (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "Popup(Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
10
How can I arrange the items by grouping (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2,oItem3
	LOCAL oItems,oItems1,oItems2,oItems3,oItems4
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
				oItems1 := oItem:Items()
					oItem1 := oItems1:Add("Horizontal",2)
						oItem1:GroupPopup := 1/*exGroupPopup*/
						oItems2 := oItem1:Items()
							oItems2:Add("Sub-Item <b>A</b>")
							oItems2:Add("Sub-Item <b>B</b>")
							oItems2:Add("Sub-Item <b>C</b>")
					oItems1:Add(""):CaptionWidth := 16
					oItem2 := oItems1:Add("Vertical",2)
						oItem2:Alignment := 1/*exCenter*/
						oItem2:GroupPopup := 257/*exGroupPopupVertical+exGroupPopup*/
						oItems3 := oItem2:Items()
							oItems3:Add("Sub-Item <b>A</b>")
							oItems3:Add("Sub-Item <b>B</b>")
							oItems3:Add("Sub-Item <b>C</b>")
					oItems1:Add(""):CaptionWidth := 16
					oItem3 := oItems1:Add("Popup",2)
						oItems4 := oItem3:Items()
							oItems4:Add("Sub-Item <b>A</b>")
							oItems4:Add("Sub-Item <b>B</b>")
							oItems4:Add("Sub-Item <b>C</b>")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
9
How can I arrange the items by grouping (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "[group=0x03](Horizontal[group=0x01](Sub-Item <b>A</b>,Sub-Item <b>B</b>,Sub-Item <b>C</b>),[captionwidth=16],Vertical[group=0x0101][align=1](Sub-Item <b>A</b>,Sub-Item <b>B</b>,Sub-Item <b>C</b>),[captionwidth=16],Popup(Sub-Item <b>A</b>,Sub-Item <b>B</b>,Sub-Item <b>C</b>),[captionwidth=160])"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
8
How can I arrange some items vertically, and some horizontally (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem,oItem1,oItem2
	LOCAL oItems,oItems1,oItems2,oItems3
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItems1 := oItem:Items()
					oItems1:Add("1")
					oItems1:Add("2")
					oItems1:Add("3")
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
			oItem1 := oItems:Add("",2)
				oItems2 := oItem1:Items()
					oItems2:Add("4")
					oItems2:Add("5")
					oItems2:Add("6")
				oItem1:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
			oItem2 := oItems:Add("",2)
				oItems3 := oItem2:Items()
					oItems3:Add("7")
					oItems3:Add("8")
					oItems3:Add("9")
				oItem2:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
7
How can I arrange some items vertically, and some horizontally (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "[group=3](1,2,3),[group=3](4,5,6),[group=3](7,8,9)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
6
How can I assign multiple-lines to an item (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItems1 := oItem:Items()
					oItems1:Add("Item 1"):Caption := "Item <br><c><b>1"
					oItems1:Add("Item 2"):Caption := "Item <br><c><b>2"
					oItems1:Add("Item 3"):Caption := "Item <br><c><b>3"
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
5
How can I assign multiple-lines to an item (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "[group=3](Item <br><c><b>1,Item <br><c><b>2,Item <br><c><b>3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
4
How can I add new items arranged horizontally to the ribbon control (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItem
	LOCAL oItems,oItems1
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItem := oItems:Add("",2)
				oItems1 := oItem:Items()
					oItems1:Add("Item 1")
					oItems1:Add("Item 2")
					oItems1:Add("Item 3")
				oItem:GroupPopup := 3/*exNoGroupPopupFrame+exGroupPopup*/
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
3
How can I add new items arranged horizontally to the ribbon control (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "[group=3](Item 1,Item 2,Item 3)"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
2
How can I add new items to the ribbon control (method 2)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oItems
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oItems := oRibbon:Items()
			oItems:Add("Item 1")
			oItems:Add("Item 2")
			oItems:Add("Item 3")
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN
1
How can I add new items to the ribbon control (method 1)

#include "AppEvent.ch"
#include "ActiveX.ch"

PROCEDURE Main
 	LOCAL oForm
	LOCAL nEvent := 0, mp1 := NIL, mp2 := NIL, oXbp := NIL
	LOCAL oRibbon

	oForm := XbpDialog():new( AppDesktop() )
	oForm:drawingArea:clipChildren := .T.
	oForm:create( ,,{100,100}, {640,480},, .F. )
	oForm:close  := {|| PostAppEvent( xbeP_Quit )}

	oRibbon := XbpActiveXControl():new( oForm:drawingArea )
	oRibbon:CLSID  := "Exontrol.Ribbon.1" /*{DDF58CFA-750F-45E0-8A00-CFBE431702E2}*/
	oRibbon:create(,, {10,60},{610,370} )

		oRibbon:Items():ToString := "Item 1,Item 2,Item 3"
		oRibbon:Refresh()

	oForm:Show()
	DO WHILE nEvent != xbeP_Quit
		nEvent := AppEvent( @mp1, @mp2, @oXbp )
		oXbp:handleEvent( nEvent, mp1, mp2 )
	ENDDO 
RETURN